import 'dart:core';

Future<bool> init() async {
  return true;
}

class GZ {
  GZ({int tg = 0, int dz = 0}) {
    throw UnimplementedError('unknown');
  }

  int get dz {
    throw UnimplementedError('unknown');
  }

  int get tg {
    throw UnimplementedError('unknown');
  }

  set dz(int value) {
    throw UnimplementedError('unknown');
  }

  set tg(int value) {
    throw UnimplementedError('unknown');
  }
}

class Day {
  Day.fromSolar({required int year, required int month, required int day}) {
    throw UnimplementedError('unknown');
  }

  Day.fromLunar(
      {required int year,
      required int month,
      required int day,
      bool isRun = false}) {
    throw UnimplementedError('unknown');
  }

  Day after({required int dayNum}) {
    throw UnimplementedError('unknown');
  }

  Day before({required int dayNum}) {
    throw UnimplementedError('unknown');
  }

  int getLunarYear({bool chineseNewYearBoundary = false}) {
    throw UnimplementedError('unknown');
  }

  int getLunarMonth() {
    throw UnimplementedError('unknown');
  }

  int getLunarDay() {
    throw UnimplementedError('unknown');
  }

  int getSolarYear() {
    throw UnimplementedError('unknown');
  }

  int getSolarMonth() {
    throw UnimplementedError('unknown');
  }

  int getSolarDay() {
    throw UnimplementedError('unknown');
  }

  GZ getYearGZ({bool chineseNewYearBoundary = false}) {
    throw UnimplementedError('unknown');
  }

  GZ getMonthGZ() {
    throw UnimplementedError('unknown');
  }

  GZ getDayGZ() {
    throw UnimplementedError('unknown');
  }

  GZ getHourGZ({required int hour, bool isZaoWanZiShi = true}) {
    throw UnimplementedError('unknown');
  }

  bool isLunarLeap() {
    throw UnimplementedError('unknown');
  }

  // 星期几
  int getWeek() {
    throw UnimplementedError('unknown');
  }

  // 处于该月的第几周
  int getWeekIndex() {
    throw UnimplementedError('unknown');
  }

  // 获取星座
  int getConstellation() {
    throw UnimplementedError('unknown');
  }

  // 是否有节气
  bool hasJieQi() {
    throw UnimplementedError('unknown');
  }

  // 获取节气索引
  int getJieQi() {
    throw UnimplementedError('unknown');
  }

  double getJieQiJD() {
    throw UnimplementedError('unknown');
  }

  dispose() {
    throw UnimplementedError('unknown');
  }
}

//========================================================================================
JdList siZhu2Year(
    {required int yearTg,
    required int yearDz,
    required int monthTg,
    required int monthDz,
    required int dayTg,
    required int dayDz,
    required int hourTg,
    required int hourDz,
    int fromYear = 1800,
    int toYear = 2300}) {
  throw UnimplementedError('unknown');
}

GZ getShiGz(
    {required int dayTg, required int hour, bool isZaoWanZiShi = true}) {
  throw UnimplementedError('unknown');
}

// 获取一年中的阴历润月
getRunMonth({required int year}) {
  throw UnimplementedError('unknown');
}

// 获取阴历月的天数
getLunarMonthNum({required int year, required int month, bool isRun = false}) {
  throw UnimplementedError('unknown');
}

SxtwlTime JD2DD({required double jd}) {
  throw UnimplementedError('unknown');
}

double toJD(SxtwlTime _time) {
  throw UnimplementedError('unknown');
}

class JdList {
  int get num {
    throw UnimplementedError('unknown');
  }

  double indexOf(int index) {
    throw UnimplementedError('unknown');
  }
}

class SxtwlTime {
  SxtwlTime(
      {int year = 0,
      int month = 0,
      int day = 0,
      double hour = 0,
      double min = 0,
      double sec = 0}) {
    throw UnimplementedError('unknown');
  }

  int get year {
    throw UnimplementedError('unknown');
  }

  set year(int value) {
    throw UnimplementedError('unknown');
  }

  int get month {
    throw UnimplementedError('unknown');
  }

  set month(int value) {
    throw UnimplementedError('unknown');
  }

  int get day {
    throw UnimplementedError('unknown');
  }

  set day(int value) {
    throw UnimplementedError('unknown');
  }

  double get hour {
    throw UnimplementedError('unknown');
  }

  set hour(double value) {
    throw UnimplementedError('unknown');
  }

  double get min {
    throw UnimplementedError('unknown');
  }

  set min(double value) {
    throw UnimplementedError('unknown');
  }

  double get sec {
    throw UnimplementedError('unknown');
  }

  set sec(double value) {
    throw UnimplementedError('unknown');
  }
}
